iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0

hi all, 來到第28天 昨天已經列點了 Hangfire 支援的 job 類型及實做了簡單的 Recurring job ,今天就來讓他呼叫專案的API吧。

弄髒手時間

Program

首先我們需要先針對 Controller 給予特定的 HttpClient DI

builder.Services.AddHttpClient<ChainController>("LocalClient", client =>
{
    client.BaseAddress = new Uri("http://localhost:8080");
});

builder.Services.AddTransient<IChainApi, ChainApi>();

Controller

新增端點給來 create job

public class ChainController(IChainApi chainApi) : Controller
{
    [HttpGet("/generate")]
    public IActionResult GenerateBlocks()
    {
        RecurringJob.AddOrUpdate("generate block", () =>  chainApi.GenerateNewBlock(), Cron.Minutely);
        return Ok("Generate new block job added");
    }
}

Related Service

public interface IChainApi
{
    Task GenerateNewBlock();
}

public class ChainApi(HttpClient httpClient) : IChainApi
{
    public async Task GenerateNewBlock()
    {
        var response = await httpClient.PostAsync("api/v1/chain/new", new StringContent(""));
        response.EnsureSuccessStatusCode();
    }
}

以上都補上後就可以將 Hangfire 運行起來新增 job了,接著就可以觀察 BlockChain 是否有被呼叫。

Conclusion

今天將 cronjob 架設完成,此次鐵人賽要做的實驗用區塊鏈就弄得差不多啦~~~

剩下的兩天就來做這30天的 recap吧。


上一篇
Day27 Hangfire DashBoard
下一篇
Day 29 Recap
系列文
Side-Project:: 為自己打造個可編輯的區塊鏈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言